<?php

namespace App\Services;

class Curl
{

    public static function geturl($url)
    {
        $headerArray = array("Content-type:application/json;", "Accept:application/json");
        $ch = curl_init();//初始化时
        curl_setopt($ch, CURLOPT_URL, $url);//这是你想用PHP取回的URL地址。你也可以在用curl_init()函数初始化时设置这个选项。
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);//设置为FALSE 禁止 cURL 验证对等证书（peer’s certificate）。要验证的交换证书可以在 CURLOPT_CAINFO 选项中设置，或在 CURLOPT_CAPATH中设置证书目录。,,终止从服务器进行验证
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);//设置为 1 是检查服务器SSL证书中是否存在一个公用名(common name)。译者注：公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain)。 设置成 2，会检查公用名是否存在，并且是否与提供的主机名匹配。 0 为不检查名称。 在生产环境中，这个值应该是 2（默认值）。
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);////设为TRUE把curl_exec()结果转化为字串，而不是直接输出,//成功返回结果，不输出结果，失败返回false
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArray);//设置header
        $output = curl_exec($ch);//执行一个cURL会话
        curl_close($ch);
        $output = json_decode($output, true);
        return $output;
    }


    public static function posturl($url, $data)
    {
        $data = json_encode($data);
        $headerArray = array("Content-type:application/json;charset='utf-8'", "Accept:application/json");
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($curl, CURLOPT_POST, 1);//若为0则是get方式：设置post方式
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);//为post添加数据$data
        curl_setopt($curl, CURLOPT_HTTPHEADER, $headerArray);//设置header
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);////设为TRUE把curl_exec()结果转化为字串，而不是直接输出,//成功返回结果，不输出结果，失败返回false
        $output = curl_exec($curl);////执行一个cURL会话
        curl_close($curl);
        return json_decode($output,true);
    }


    public static function puturl($url, $data)
    {
        $data = json_encode($data);
        $ch = curl_init(); //初始化CURL句柄
        curl_setopt($ch, CURLOPT_URL, $url); //设置请求的URL
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type:application/json'));//设置header
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //设为TRUE把curl_exec()结果转化为字串，而不是直接输出,//成功返回结果，不输出结果，失败返回false

        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); //设置请求方式
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//设置提交的字符串
        $output = curl_exec($ch);//执行一个cURL会话
        curl_close($ch);
        return json_decode($output, true);
    }

    public static function delurl($url, $data)
    {
        $data = json_encode($data);
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type:application/json'));//设置header
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设为TRUE把curl_exec()结果转化为字串，而不是直接输出,//成功返回结果，不输出结果，失败返回false
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        $output = curl_exec($ch);//执行一个cURL会话
        curl_close($ch);
        $output = json_decode($output, true);
    }

    public static  function patchurl($url, $data)
    {
        $data = json_encode($data);
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type:application/json'));//设置header
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设为TRUE把curl_exec()结果转化为字串，而不是直接输出,//成功返回结果，不输出结果，失败返回false
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PATCH");
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);     //20170611修改接口，用/id的方式传递，直接写在url中了
        $output = curl_exec($ch);
        curl_close($ch);
        $output = json_decode($output);
        return $output;
    }
}
